The present invention relates to a method for transmitting data at high speed via a network and, more particularly, to a method for transmitting large quantities of data over long distances via a network.
Where computers can transmit data between them, they enjoy the advantage of sharing data. A plurality of computers may share one or more files therebetween by way of the file server. These functions are all implemented through the availability of data transmission between computers or between any one of the configured computers and a file server.
Data is transmitted generally via a network connected to a communication controller included in a computer. The communication controller is usually furnished on a single board. In operation, the communication controller receives a data transmission request or a data reception request from a computer and exchanges data with a communication target in units called packets. Each packet, which is the unit of data communication, contains user data and control information including destination and other information. The communication controller is incorporated in the host and is directly connected to an internal bus thereof. The host has a program called the operating system working therein. The operating system includes communication control software that controls the communication controller.
A typical network is what is known as the Fibre Channel. As discussed in xe2x80x9cFibre Channel Connection to the Futurexe2x80x9d (Fibre Channel Association, 1994, pp. 11-19), the Fibre Channel is available for communication between computers as well as between a computer and disk drives. The Fibre Channel is controlled functionally by layers FC0 through FC4 for each function of the fiber channel. Of these layers, FCO defines the electrical characteristics of physical cables, FC1 stipulates the methods for encoding and decoding data, and FC2 specifies the data format relevant to the Fibre Channel. FC3 and FC4 designate logical communication methods. The Fibre Channel can connect a plurality of devices of different types, the capability being implemented by the layer FC4 converting data in format for use by a plurality of devices on the Fibre Channel. Illustratively, the Fibre Channel may be connected to disk drives as well as network devices. FC3 is the layer that provides common control over data communication. FCO through FC4 are generally implemented by hardware, specifically on a board comprising a plurality of LSI""s. With the Fibre Channel, the above-mentioned communication control software is a program that controls disk drives and networks. In operation, the communication control program issues requests to FC4 of the Fibre Channel. Upon receipt of a request from the communication control program, the Fibre Channel converts the data to its own data format in accordance with the FC4 provisions, forwards the data after conversion through the layers FC3, FC2, FC1 and FC0, in that order, and sends to the destination device. Apart from the packets mentioned earlier, the Fibre Channel is capable of transferring data up to 2 KB long each as stipulated by FC2. On the Fibre Channel, any data exceeding the 2 KB length limit is divided into units of 2 KB each when transferred by the layer FC2.
The communication control software may be functionally divided into two major layers: a protocol processing program and a device control program. The protocol processing program receives data communication requests from a user program. For data transmission, the protocol processing program converts user data into packets according to the communication protocol specific to the network. For data reception, the protocol processing program extracts the user data from the transmitted packets. The device control program is a program that requests the communication controller to transmit packets. The primary function of the device control program is to control the hardware of the communication controller. In transmitting data, the device control program typically executes the following instruction string:
(1) get_register (STATUS)
(2) set_register (buf_addr)
(3) set_register (pkt_length)
(4) set_register (IN, DMA_GO)
The instruction (1) above reads the status of the communication controller and checks to see if the status is normal. The instruction (2) transmits the location of target data in the host to the communication controller. The instruction (3) notifies the communication controller of the length of the packet to be transmitted. The instruction (4) starts the hardware for transmitting the data from the host to the communication controller. The processing above allows the communication controller to analyze control information held in the packet and to transmit the target data to the destination of communication. Thereafter, the protocol processing program waits for an acknowledgment (abbreviated to ACK hereunder) to arrive from the destination indicating that the data has been normally transmitted. The above processes (1) through (4) are carried out by writing and reading information to and from control registers in the communication controller. In like manner, the device control program typically executes the following instruction string upon receiving data:
(1) get_register (STATUS)
(2) set_register (buf_addr)
(3) set_register (pkt_length)
(4) set_register (OUT, DMA_GO)
The instruction (1) above reads the status of the communication controller and checks to see if the status is normal. The instruction (2) transmits the location of target data in the host to the communication controller. The instruction (3) notifies the communication controller of the length of the packet to be transmitted. The instruction (4) starts the hardware for transmitting the data from the communication controller to the host. Thereafter, the protocol processing program generates an ACK and sends it to the destination of communication indicating that the data has been normally transmitted. The processing above allows the communication controller to analyze the control information held in the packet and to transmit the target data to the destination of communication.
What characterizes the above type of communication is that an ACK is transmitted and received to verify the normal transfer of data every time a packet has been transmitted. With commonly implemented networks, the packet size is limited to be 1 to 4 kilobytes. To transmit data exceeding the size of one packet requires dividing the data into a plurality of packets that may be transmitted. In such a case, a plurality of ACK""s are to be transmitted and received regarding each set of user data divided into a plurality of packets. After one packet is transmitted, the next packet cannot be transmitted unless and until the ACK for the most recently transmitted packet has been returned. This prohibition of transmission of the next packet is for communication. In data communication, if any packet is not transmitted normally, the same packet must be retransmitted. This requires retaining the most recently transmitted data in the memory on the transmitting side in preparation for possible retransmission. How long the data should remain in the memory is determined upon receipt of an ACK. That is, when the destination of communication has returned an ACK indicating the normal reception of the data, then the packet retained on the transmitting side is discarded.
One disadvantage of the above method of data transmission Is that it takes time to transmit data. This is because the next packet cannot be transmitted until the ACK for the current packet is returned. A solution to this problem is described illustratively by Samuel J. Leffer et al., In xe2x80x9cThe Design and Implementation of the 4.3BSD UNIX Operating systemxe2x80x9d (Addison-Wesley Publishing Company, Inc., 1989, pp. 368-375). The solution involves transmitting a plurality of packets sequentially. In the above-cited reference, the protocol processing program stipulates that an ACK is to be issued for every n packets (i.e., n times the packet size). Within that unit of data transmission, packets may be transmitted and received sequentially. For example, suppose that the packet size is 1 KB, that an ACK is issued In units of 10 KB, and that 20 KB of user data are to be transmitted. In this case, the protocol processing program on the data transmitting side initially receives 10 KB of data from the user program. The protocol processing program divides the 10-KB data into 10 packets of 1 KB each. The 10 packets are sent consecutively to the destination. Having transmitted the 10 packets, the transmitting side waits for an ACK to be returned by the receiving side. The receiving side puts together the packets of I KB each as they are continuously sent in. When the last 1-KB packet has arrived, the receiving side returns an ACK to the transmitting side. Upon receipt of the ACK, the transmitting side verifies that all data has been transmitted normally. If everything is normal, the protocol processing program of the transmitting side will perform the same process on the next 10-KB data. If the 10 packets were not transmitted normally, the same 10-packets are retransmitted. This method offers better data transfer performance than the method described earlier because packets can be transmitted consecutively within, say, the 10-packet range.
When a set of data is transmitted conventionally, the data is divided into packets and an ACK is returned every time a packet has been transmitted and received. If no ACK comes back, the next packet cannot be transmitted. The time required to return an ACK depends largely on the distance over which the data is transmitted. The longer the transmitting distance, the more prolonged the time required to return an ACK. This makes it difficult to transmit one packet after another continuously because an appreciable wait time can occur before an ACK arrives following the transmission of each packet. Where longer transmitting distances are involved, the network usability drops precipitously because of the prolonged ACK wait time. This impedes the network from being utilized effectively. The problem becomes more pronounced with high-speed data transmission media such as optical fiber cables. That is, the ability of the media to transmit data rapidly is canceled out by the increased time in which ACK""s are awaited.
The solution to the problem proposed by the above-cited reference increases the size of the data for which one ACK is returned so that data may be transmitted at the high possible speed. More specifically, data items each smaller than an enlarged ACK are transmitted consecutively. By enlarging the ACK, the proposed method appears to provide faster data transmission than the earlier method. The greater the ACK, the more efficient data transmission is supposed to become. However, the proposed method is effective only if all data is transmitted normally. Long-distance communication is known to diminish the rate at which data is transmitted normally to the destination, mainly due to cable noise and data losses through network relay computers. Most network relay computers are connected to a plurality of networks. In such setups, memory constraints in any relay computer can truncate received data. The longer the transmitting distance is, the growing number of relay computers are installed to repeat data within or between networks. Numerous relay computers are liable to a growing probability of data loss. According to the method proposed by the above-cited reference, if any data item within a given ACK unit is lost, the entire ACK unit must be retransmitted. If retransmission overhead is taken into consideration in an environment of a high probability of data loss, the performance of data transfer can be lower than that of the earlier method.
According to the present invention, one ACK unit is divided into a plurality of sub-ACK unit packets each furnished with a tag indicating the pre-division position. The divided packets are transmitted sequentially. Upon receipt of each divided packet, the receiving side communication controller returns a sub-ACK comprising the result of the reception to the transmitting side communication controller. Having received all packets, the receiving side communication controller determines the order of the packets as per the contents of their tags indicating the pre-division position and merges their data parts. The transmitting side checks the received sub-ACK""s for the result of the reception to see if any packet need retransmission. Any packet is retransmitted if determined to be necessary. When all sub-ACK""s have been normally received, the transmitting side puts them into a single ACK and notifies the request source thereof.
Because one ACK unit is divided into a plurality of sub-ACK unit packets for consecutive transmission, data transfer performance is enhanced. Since a packet retransmission request may be issued for each sub-ACK, drops in the transmitting performance are minimized in long-distance communication setups.